// import com.alibaba.druid.sql.SQLUtils;
// import com.alibaba.druid.sql.ast.SQLName;
// import com.alibaba.druid.sql.ast.SQLObject;
// import com.alibaba.druid.sql.ast.statement.SQLColumnDefinition;
// import com.alibaba.druid.sql.dialect.mysql.visitor.MySqlASTVisitor;
// import com.alibaba.druid.util.FnvHash;

// import java.util.Collections;
// import java.util.List;
#pragma once
#include "MySqlExprImpl.h"
#include "../../../../ast/SQLName.h"

class MySqlUserName : virtual public MySqlExprImpl, virtual public SQLName /*,virtual public Cloneable*/
{
public:
  string_ptr userName;
  string_ptr host;
  string_ptr identifiedBy;

  long userNameHashCod64;
  long hashCode64_;

  SHAREDOBJECT(MySqlUserName);
  string_ptr getUserName();

  void setUserName(string_ptr userName);

  string_ptr getNormalizeUserName();

  string_ptr getHost();

  void setHost(string_ptr host);

  // @Override
  void accept0(MySqlASTVisitor_ptr visitor);

  string_ptr getSimpleName();

  string_ptr getIdentifiedBy();

  void setIdentifiedBy(string_ptr identifiedBy);

  string_ptr toString();

  SQLObject_ptr clone();

  // @Override
  SQLObject_list_ptr getChildren();

  long nameHashCode64();

  // @Override
  long hashCode64();

  // @Override
  SQLObject_ptr getResolvedColumn();
};
